package org.summerframework.core.base.dao;


import org.summerframework.core.base.dto.BaseDO;
import org.summerframework.core.page.PaginationQuery;
import org.summerframework.core.util.ConvertUtils;

import java.util.List;

/**
 * 继承BaseDO,并添加分类功能.
 * <p>
 * 必须使用泛型, 不然转化对象会出问题
 * <p>
 * {@link ConvertUtils}
 *
 * @param <D> 操作数据库的数据对象
 * @author 石超
 * @version 1.0.0
 */
public interface BaseQueryDAO<D extends BaseDO, Q extends PaginationQuery> extends BaseDAO<D> {
    /**
     * 根据分页查询
     *
     * @param query 查询条件
     * @return 数量
     */
    Integer selectCountByQuery(Q query);

    /**
     * 根据分页查询
     *
     * @param query 查询条件
     * @return 列表
     */
    List<D> selectByQuery(Q query);
}
